ternary search explained